deck <- read.xlsx("deck.xlsx")

deck2 <- deck
shuffle <- function(cards) {
  # 利用sample函数随机生成52个数字
  order <- sample(1:52, size = 52)
  # 利用生成的随机数去索引数据
  return(cards[order, 1:3])
}

deck2 <- shuffle(deck)

deck2$value[deck2$face == "ace"] <- 14
deck2[deck2$face == "ace", 'value'] <- 14

View(deck2)


#1:hearts

deck4 <- deck

# 假设deck是一个已经存在的数据框，包含一副扑克牌的信息
# 1. 制作一副牌（deck）的副本，命名为`deck4`
deck4 <- deck

# 2. 将`deck4`中所有牌的点数值（value列）赋值为0
deck4$value <- 0

# 3. 将`deck4`中所有红桃牌的点数更改为1
# 假设牌的花色信息存储在名为suit的列中，红桃用"Hearts"表示
deck4$value[deck4$suit == "hearts"] <- 1

# 4. 将`deck4`中黑桃Queen的点数更改为13
# 假设牌的面值信息存储在名为face的列中，黑桃Queen用"Queen of Spades"表示
deck4$value[deck4$face == "queen" & deck4$suit == "spades"] <- 13

# 打印修改后的deck4以查看结果
print(deck4)



#2:blackjack

# 假设deck是一个已经存在的数据框，包含一副扑克牌的信息
# 1. 为deck建立副本deck5
deck5 <- shuffle(deck)

# 2. 修改人头牌（jack, king, queen）的点数为10
# 假设牌的面值信息存储在名为face的列中
deck5$value[deck5$face %in% c("jack", "king", "queen")] <- 10

# 3. 对于Ace的点数，需要根据游戏规则来决定其点数是11还是1
# 这里我们先将其点数设为1，如果这样会导致总点数超过21，则改为11
# 假设Ace的面值信息存储在名为face的列中，且Ace的初始点数为1
# 这里我们不直接修改Ace的点数，而是在计算总点数时根据需要调整

deck5$value[deck5$face == "ace"] <- 1

deck5$value[deck5$face == "ace"]<-NA
# 打印修改后的deck5以查看结果
print(deck5)


